﻿using System;
using Data.AggregateRoots.Identity;
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.Owin;
using Microsoft.Owin;

namespace Web.Identity.Core
{
    /// <summary>
    /// 
    /// </summary>
    public class AppUserManager : UserManager<IdentityUser, Guid>
    {
        public AppUserManager(AppUserStore store)
            : base(store)
        {

        }

        public override bool SupportsUserTwoFactor => false;

        //public static AppUserManager Create(IdentityFactoryOptions<AppUserManager> options, IOwinContext context)
        //{
        //    var manager = new AppUserManager();
        //    // 配置用户名的验证逻辑
        //    manager.UserValidator = new UserValidator<IdentityUser, Guid>(manager)
        //    {
        //        AllowOnlyAlphanumericUserNames = false,
        //        RequireUniqueEmail = false// 禁用电子邮件相关内容
        //    };

        //    // 配置密码的验证逻辑
        //    manager.PasswordValidator = new PasswordValidator
        //    {
        //        RequiredLength = 6,
        //        RequireNonLetterOrDigit = true,
        //        RequireDigit = true,
        //        RequireLowercase = true,
        //        RequireUppercase = true,
        //    };

        //    // 配置用户锁定默认值
        //    manager.UserLockoutEnabledByDefault = false;
        //    manager.DefaultAccountLockoutTimeSpan = TimeSpan.FromMinutes(5);
        //    manager.MaxFailedAccessAttemptsBeforeLockout = 5;

        //    // 注册双重身份验证提供程序。此应用程序使用手机和电子邮件作为接收用于验证用户的代码的一个步骤
        //    // 你可以编写自己的提供程序并将其插入到此处。
        //    //manager.RegisterTwoFactorProvider("电话代码", new PhoneNumberTokenProvider<IdentityUser, Guid>
        //    //{
        //    //    MessageFormat = "你的安全代码是 {0}"
        //    //});
        //    //manager.RegisterTwoFactorProvider("电子邮件代码", new EmailTokenProvider<IdentityUser, Guid>
        //    //{
        //    //    Subject = "安全代码",
        //    //    BodyFormat = "你的安全代码是 {0}"
        //    //});
        //    //manager.EmailService = new EmailService();
        //    //manager.SmsService = new SmsService();

        //    var dataProtectionProvider = options.DataProtectionProvider;
        //    if (dataProtectionProvider != null)
        //    {
        //        manager.UserTokenProvider =
        //            new DataProtectorTokenProvider<IdentityUser, Guid>(dataProtectionProvider.Create("ASP.NET Identity"));
        //    }
        //    return manager;
        //}
    }
}
